A serial attached small computer system interface (SCSI), or SAS topology is typically formed by a plurality of SAS storage network elements which include initiator SAS devices, such as a host, a host bus adapter or a SAS Expander; target SAS devices such as SAS Expander devices and SAS end devices such as hard disk drives.
In most SAS topologies, multiple SAS Expanders are located within the topology. The SAS Expander facilitates communication between the various SAS storage network elements by providing the necessary switching and routing functions which are required. Communication, typically in the form of connection request, between a SAS Expander and another SAS storage network element is performed by one of three routing methods, namely direct routing, table routing and subtractive routing. Direct routing is used to forward connection requests between the SAS Expander and a SAS storage network element which are directly attached to each other; table routing is used to forward connection requests between the SAS Expander and other storage network elements in the SAS topology which are not directly attached to SAS Expander and subtractive routing is used to forward unresolved connection requests when direct or table routing fails.
For SAS Expanders which communicate with storage network elements via subtractive routing, the storage network elements are notionally considered as being upstream from the SAS Expander and storage network elements with which the SAS Expander communicates with via table routing are typically considered as being downstream from the SAS Expander. As the SAS standard does not support loops within its topology, it will be understood that there is only one logical pathway between a SAS Expander and a storage network element which may be tracked and stored within a route table in the SAS Expander.
SAS Expanders may be seen as being self-configuring whereby the Expander is required to configure its own route table or non-self-configuring whereby the Expander receives route table information from another source. When necessary, a self-configuring SAS Expander configures the route tables of other non-self configuring expanders.
As will be understood, the Expander route table needs to be updated and configured each time there is a change made to the SAS topology (e.g., the addition or removal of a storage network element). However, this configuration is only required for SAS Expanders using table routing. Direct routing does not require any configuration as the SAS Expander is directly attached to another SAS storage network element and does not need to retrieve the address of the SAS storage element. Subtractive routing only requires a selection of a subtractive port in order to communicate with a SAS storage network element.
In order to configure the route tables of SAS Expanders, a centralized topology discovery method is typically used. An external management application client residing in an initiator SAS device, such as a host can configure the route table of all SAS Expanders to provide a centralized topology discovery and configuration.
Use of the centralized topology discovery sourced from the external management application client is common, however, many problems are also associated with this method. In this method, the application client is required to traverse the entire SAS domain (topology) in order to update all of the route table of all the SAS Expanders which results in this method being costly in terms of Serial Management Protocol (SMP) transactions. Another problem is that in SAS domains with multiple SAS standard management application clients, large numbers of redundant SMP transactions are experienced as topology discovery operations are inefficiently duplicated. Furthermore, in a SAS domain with multiple SAS Expanders, the SMP transactions span the multiple SAS Expanders as the topology is traversed which may result in an increase of link contention between these storage network elements. Moreover, in some cases, the SAS Expanders have their route table overwritten by each internal and external management application client in a duplicative and possibly disruptive manner. Also, with respect to self-configuring Expanders in the SAS domain, since they are only concerned with SAS storage network elements which are deemed to be downstream, there is no need for its route table to include upstream information.
It is, therefore, desirable to provide a method and apparatus for a distributed topology function in a SAS system.